home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / ip / trace / tcpdump-2.2.1 / extract.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-25  |  1.9 KB  |  50 lines

  1. /*
  2.  * Copyright (c) 1990 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that: (1) source code distributions
  7.  * retain the above copyright notice and this paragraph in its entirety, (2)
  8.  * distributions including binary code include the above copyright notice and
  9.  * this paragraph in its entirety in the documentation or other materials
  10.  * provided with the distribution, and (3) all advertising materials mentioning
  11.  * features or use of this software display the following acknowledgement:
  12.  * ``This product includes software developed by the University of California,
  13.  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
  14.  * the University nor the names of its contributors may be used to endorse
  15.  * or promote products derived from this software without specific prior
  16.  * written permission.
  17.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  18.  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  19.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  * @(#) $Header: extract.h,v 1.4 92/05/25 14:28:36 mccanne Exp $ (LBL)
  22.  */
  23.  
  24. #ifdef TCPDUMP_ALIGN
  25. #if BYTEORDER == LITTLE_ENDIAN
  26. #define EXTRACT_SHORT(p)\
  27.     ((u_short)\
  28.         ((u_short)*((u_char *)p+1)<<8|\
  29.          (u_short)*((u_char *)p+0)<<0))
  30. #define EXTRACT_LONG(p)\
  31.         ((u_long)*((u_char *)p+3)<<24|\
  32.          (u_long)*((u_char *)p+2)<<16|\
  33.          (u_long)*((u_char *)p+1)<<8|\
  34.          (u_long)*((u_char *)p+0)<<0)
  35. #else
  36. #define EXTRACT_SHORT(p)\
  37.     ((u_short)\
  38.         ((u_short)*((u_char *)p+0)<<8|\
  39.          (u_short)*((u_char *)p+1)<<0))
  40. #define EXTRACT_LONG(p)\
  41.         ((u_long)*((u_char *)p+0)<<24|\
  42.          (u_long)*((u_char *)p+1)<<16|\
  43.          (u_long)*((u_char *)p+2)<<8|\
  44.          (u_long)*((u_char *)p+3)<<0)
  45. #endif
  46. #else
  47. #define EXTRACT_SHORT(p)    ((u_short)ntohs(*(u_short *)p))
  48. #define EXTRACT_LONG(p)        (ntohl(*(u_long *)p))
  49. #endif
  50.